Software for image processing apparatuses has been built typically as firmware, which is static and fixed, on a real-time operating system (OS). Even if the firmware consists of multiple processing modules, the firmware is stored in a non-volatile memory of the apparatus with its entirety being statically linked to a single load module. During system startup, the firmware is loaded from a non-volatile memory such as a hard disk to a RAM and executed there, or is directly executed on a non-volatile memory such as a ROM. Firmware that configures a peripheral system such as a low-cost image processing apparatus, is typically configured so as not to dynamically load or link component modules from the viewpoints of cost-effectiveness and security. This is because the amount of memory for storing a symbol table required for dynamic linking and overhead relating to processing for resolving symbols to addresses can decrease cost-effectiveness of the system or additional submodules loaded and linked can compromise the quality and security of the entire system which have been adequately evaluated and achieved before the linkage of those submodules.
Image processing apparatuses have been developed in which an additional software operation environment is provided on a real-time OS of the firmware of peripheral system to support software functions such as dynamic loading, linking, and memory operations. The additional software operation environment includes an interpreter and a set of application programming interfaces (APIs) and frameworks, thereby providing a sort of OS or computing platform for software running on it. The interpreter sequentially reads, interprets, and executes a sequence of instructions in a given instruction set. Treating the instruction set on the same level as an instruction set for a hardware CPU, the interpreter is sometimes called a virtual machine.
The set of APIs and the frameworks provide the software running in the software operation environment with access to resources provided by the real-time OS lying under the software operation environment as well as resources that are abstractions of hardware resources. The resources include contexts in which the CPU executes instructions, a memory, file system, and input/output (I/O) devices, including a network interface. The instruction-execution context on an interpreters can be managed by the software operation environment by itself independently of a multi-tasking mechanism provided by the real CPU and the real-time OS. Similarly, the software operation environment can provide its own memory management.
Because software running in the software execution environment is sequentially read, interpreted, and executed by the interpreter, instruction strings can be monitored and operations that can adversely affect the system may be able to be removed during the course of the process. Also, access from software in the software execution environment to the resources manipulates the resources indirectly through the APIs and frameworks provided by the software execution environment and therefore operations that can affect the system may be able to be removed during the course of the access. Therefore, the approach to provide the inside of the firmware with the software execution environment layer consisting of the interpreter, APIs and frameworks is considerably effective for introducing dynamic features of software individually into the firmware of a low-cost peripheral system which basically should be configured in a static and fixed manner. (See Japanese Patent Application Laid-Open No. 11-282684 and No. 2003-256216.)
In the approach descried above, a Java (registered trademark) virtual machine can be used as the interpreter, and APIs and frameworks associated with Java (registered trademark) can be used to implement the software execution environment layer. The applicant has developed and commercialized MEAP (registered trademark) in 2003, which is a multi-functional image processing apparatus including a Java (registered trademark) platform inside its firmware.
An application-downloading printer containing a network computer and a computer network system including the printer have been disclosed. In that system, a data file to be printed and an application associated with the data file are downloaded to the printer and the application is activated on the network computer to open and convert the data file into a raster image, which is then printed. An implementation of the printer has been also disclosed in which the application is a Java (registered trademark) applet. Another implementation has been disclosed in which the application is pushed from a client along with a print data file. Yet another implementation has been disclosed in which the application is pulled by the printer from a source such as an application server. (See Japanese Patent Application Laid-Open No. 11-53132.)
A network communication system has been disclosed that connects onto a transmission line a number of peripheral devices, a number of terminal devices including software driving the peripheral devices, and a server device including at least a database concerning the software driving the peripheral devices and provides network communication according to a given communication protocol. Each of the peripheral devices includes a client control unit which requests and obtains up-to-date module information associated with all or part of the software driving the peripherals or with a module used by the software from the server device, and a software delivery agent which delivers the obtained up-to-date module information to the terminal devices. Also disclosed is an implementation in which a Java (registered trademark) applet or a Java (registered trademark) application can be supplied as a client module used by software driving the peripherals. (See Japanese Patent Application Laid-Open No. 11-306107.)
The applicant has proposed in the past the following technique based on the conventional techniques described above. There are diverse requirements in various customers' printing and various other environments. Once a mission-critical system has started to successfully operate, the customer may strongly desire to maintain the stability of the entire system, which can make it difficult to change a printer driver or application. Under such restrictions in real printing environments, the vendors of printers must provide printers having provisions for meeting diverse needs of customers, rather than asking customers to modify their environment. For example, if a new printer provides a new function such as a double-sided printing function, a binding function or other finishing functions, the new function can be used of course by (i) generating a print job including a command string for using the new function through a printer driver concurrently developed for the printer, or (ii) updating customer's business application in such a manner that its mules are not individually loaded or linked. However, there is demand that a new function of a printer be enabled by a provision on the printer without affecting the customer's system, as mentioned above.
One way to meet these customer demands by a printer without affecting customer's system may be to modify the firmware of a printer and release the printer as a customized product. This method is used in some cases in practice. However, customization by modifying firmware requires much development time and costs, including those for re-evaluation of the quality of the entire printer. Furthermore, updates of firmware incorporated in a printer already installed in a customer environment require a field engineer to perform maintenance tasks requiring an advanced technique. This is a drawback to quick response to customer demands as well as cost-effectiveness. In fact, some of the demands can be met by adding preprocessing in which a received data stream itself is altered before it is interpreted, without changing the entire firmware. Therefore, what is needed is a more dynamic mechanism making it possible to add software that implements the preprocessing before interpretation of a received print data stream, in a flexible and scalable manner and independently from the firmware.
MEAP (registered trademark) that includes a software operation environment layer like a Java (registered trademark) platform in firmware of a peripheral system is known. According to this conventional technique, embedded applications independent of firmware can be developed in a software operation environment of the apparatus and the printing function of the apparatus can be accessed from a Java (registered trademark) application through an API. However, because the Java (registered trademark) platform is located in the embedded application layer in the firmware, a print data receiving function or a print server function which are implemented as a native embedded application in the layer cannot be used for Java (registered trademark) applications. For example, a print server function in which print service protocols for receiving print data through a network must be also implemented on the Java (registered trademark) side, which is inefficient in terms of development and evaluation loads as well as the amount of memory during runtime.
In other conventional techniques that do not provide a software operation environment layer in firmware of a peripheral system, the system is dynamic in its entirety because the entire system can be dynamically linked and plugged in. Given that only a mechanism that flexibly and scalably adds preprocessing before interpretation of a received PDL data has to be dynamic, these conventional approaches are not suitable for low-price small system, because the overhead for building the entire system as dynamic software entails increased costs and the difficulty of assurance of quality.
Therefore, an approach has been proposed in which a filter unit that performs preprocessing of a PDL data stream received at a printer before interpretation of the PDL data stream is implemented as flexible and scalable software, and the software is distinctly separated from the remaining portions of printer firmware which requires stability. This configuration can improve the productivity of customization of PDL printers. (See Japanese Patent Application No. 2004-093215.)
The processing function of the filter unit is based on the prerequisite that only those filters in a filter unit that are appropriate for user's environment be selectively enabled. If the number of available filters is small, a setting for selectively enabling filters can be made by using an operation panel of the apparatus or a remote user interface through a network.
However, as the number of available filters increases, the manual filter enabling task becomes considerably cumbersome. Furthermore, it is difficult to give an explanation of all available filters to operators, which makes it difficult to perform enabling tasks.